package com.其他;

/**
 * 内部类 分类：成员内部类， 局部内部类， 匿名内部类，静态内部类
 * @author chenhs
 * @date 2020/10/11
 */
public class Interior {
	//类的方法
	private  String str;
	//--------------------成员内部类(内就是一个属性)---------------------------------------------------------------------//
	private  Son son=null;
	//获取内部类的get方法
	public  Son getSon(){
		if(son==null){
			son =new Son();
		}
		return son;
	}
	/*
	* --成员内部类--
	* 外部要访问策成员内部类需要通过类的内部类书所在的类的实例访问。
	* 内部类可以直接访问外部类的的属性和方法。
	* 内部类与外部类属性和方法重名时默认访问内部类父方法，访问外部类需要使用：外部类.this.成员变量
	*
	*
	* */
	class  Son{
		private  String param;
	}
	
	public static void main(String[] args) {
		// 创建内部类需要外部类实例创建。
		//方式一
		Interior a= new Interior();
		Son b=a.new Son();
		//	方式二
		Son son = a.getSon();
	}
	//--------------------成员内部类---------------------------------------------------------------------//
	
	
	//--------------------局部内部类（类就是某个方法体的一个属性）-----------------------------------------//
	/*
	*局部内部类是定义在一个方法或者一个作用域里面的类，它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
	* 局部内部类是定义在一个方法或者一个作用域里面的类，它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内
	* 。也没有参数列表
	* */
	public void  getDate(){
		class establishDate{
			int age =0;
		}
	
	}
	//--------------------局部内部类---------------------------------------------------------------------//
	
	//--------------------匿名内部类（类里面没有名字的类）------------------------------------------------//
	/**
	* 匿名内部类需要继承或者接口才可以使用。
	* 匿名内部类没有构造方法。
	 *
	 *
	 *
	 *
	 *
	* */
	//--------------------匿名内部类---------------------------------------------------------------------//
	
}
